Coordinate positioning system

ABSTRACT

A coordinate measuring machine has X and Y component drives for a probe. The two drives are driven to produce a resultant motion describing a curve having a given start velocity vector, a given end velocity vector, and following a given velocity function V=f(K,t) wherein K=a maximum acceleration term and t=time. A computer is programmed to determine the X and Y components (V1X,V1Y) of the start velocity vector and the X and Y components (V2X,V2Y) of the end velocity vector. Thereafter the program determines the difference (DVX) between the X component (V1X) of the start velocity vector and the X component of the end velocity vector, and computes values of the function V=f(K,t) for that difference (DVX). Proportionate values are computed for the difference (DVY) of the respective Y components (V1Y,V2Y) of the start and end velocity vectors. The values are output to the respective X and Y component drives of the machine to drive the probe through the resulting curved path. Preferably the acceleration term has a triangular characteristic so as to define a constant rate of change of acceleration starting and ending with zero acceleration. This avoids impulsive motion of the probe. Other acceleration terms may be used. For example, the acceleration may vary sinusoidally or it may be constant.

FIELD OF INVENTION

This invention relates to a coordinate positioning system. Morespecifically, this invention relates to a method of and means foroperating first and second coordinate positioning drives of a coordinatepositioning apparatus to produce a resultant movement describing acurve.

The scope of this invention is specified in the claims hereto.

BRIEF DESCRIPTION OF THE DRAWINGS

An example of a system according to this invention will now be describedwith reference to the accompanying drawings wherein:

FIG. 1 is an elevation of a coordinate measuring machine;

FIG. 2 is an enlarged view along line II--II in FIG. 1 showingadditionally a diagram of a path to be described by a member of themachine;

FIG. 3 is velocity/time diagram of the movement of said member alongsaid path wherein said path is defined by two displacement vectorsconnecting three points;

FIG. 4a is a velocity/time diagram similar to FIG. 3 but wherein thedisplacement vectors are connected by a curve;

FIG. 4b is an acceleration/time diagram of FIG. 4a;

FIG. 5 (FIGS. 5a to 5e) is a flow diagram of a computer program andshows a main routine thereof;

FIG. 6 (FIGS. 6a to 6b) is a flow diagram of a first sub-routine of theprogram;

FIG. 7 (FIGS. 7a to 7b) is a flow diagram of a second sub-routine of theprogram; and

FIG. 8 is a flow diagram of a third sub-routine of the program.

DESCRIPTION OF PREFERRED EMBODIMENT

The machine (FIG. 1) has a probe 10 supported for three-dimensionalmotion in directions X,Y and Z. Measurement of the co-ordinate positionof a surface of a workpiece 12 is determined automatically when theprobe is moved into engagement with that surface. The motion of theprobe is effected by motors MX,MY,MZ controlled by position-determiningsignals MX1,MY1,MZ1 generated by a computer 11 on the basis of positionfeedback signals MX2,MY2,MZ2 output by position-reading devices (notshown). For present purposes only the drive to the motors MX,MY isconsidered.

By way of example, the machine is required to measure the position oftwo surfaces 13,14 (FIG. 2) at opposite sides of a projection 15. Thusthe probe, when moving from the surface 13 to the surface 14, has tocircumnavigate the projection 15. To this purpose the computer has aprogram 99 (FIG. 1) to drive the probe along a path through pointsA,D,E,C wherein the path AD is part of a displacement vector SAB and thepath EC is part of a displacement vector SBC. The vectors SAB, SBC arepostulated to provide an initial orientation for the path, and a curveDE is introduced to shorten the path and to avoid the sharp change ofdirection which would occur if the movement were taken to the commonpoint B of the two displacement vectors. Further, there is postulatedfor each path AB,BC a velocity vector VAB,VBC defined by a basicvelocity profile VP1,VP2 (FIG. 3) comprising an initial accelerationperiod I,II, a period III of steady maximum velocity V1 or V2, and afinal deceleration period IV,V. Such a basic profile is required toprovide for the occasions when there is no need for a curve such as DE,e.g. if the probe 10 is required to reach the point B and stop there.However, inasmuch as there is need for the curve, the latter is arrangedto connect the basic velocity profiles at the respective phases III ofsteady velocities thereof. Further, primarily for the reason thatdirection of the two paths AB,BC differ, there arises (as will be seen)a need for the curve itself to have a velocity profile and the programis written to provide for this.

The program is written to treat the displacement vectors SAB,SBC, thecurve DE, and the velocity profiles VP1,VP2, entirely in terms of vectorcomponents in the co-ordinate directions.

Thus, bearing in mind that the example deals with the two-dimensionalcase, each displacement vector has components in the X and Y directionsof its end points AX,AY,BX,BY, CX,CY (FIG. 2), and each velocity profilehas X and Y velocity components V1X,V1Y,V2X,V2Y (FIG. 3). The motorsMX,MY may be driven by velocity demand signals. However it has beenfound appropriate to generate these signals as position demand signalsMX1,MY1 (FIG. 1) by writing the program to determine the co-ordinates ofclosely spaced points P (FIG. 2) along the path ADEC in terms ofposition increments per unit interval of time T (FIGS. 3,4), and theincrements are output to the motors at those unit intervals. To thisend, the computer 11 includes a clock 98 (FIG. 1) having a clock signal98A occurring at the intervals T and connected (as described laterhereinbelow) to control the output of the signals MX1, MY1. Thereforethe speed of any one motor is determined by the magnitude of theposition increments the motor has to satisfy in unit time. Although, asstated, the motors are driven by position demand signals in terms ofdemands for specified position increments, it is appropriate toillustrate the program in terms of velocity/time as has been done inFIGS. 3 and 4.

Reviewing the program at first in general terms, the programmerintroduces the parameters of the basic velocity profiles VP1,VP2 (FIG.3), i.e. the values of the spatial co-ordinates of the points A,B,C, thevalues of the maximum steady velocities V1,V2, and the value of anacceleration term K (FIGS. 4b and 7) defining a maximum rate of changeof acceleration. The program determines the component profilesV1X(t),V1Y(t),V2X(t),V2Y(t) of the basic profiles, each componentprofile having a period of acceleration and deceleration and a period ofsteady velocity component V1X,V1Y,V2X,V2Y. It is only necessary tocompute one of the X or Y component profiles, because the othercomponent profile can be generated by scaling, i.e. by generatingproportionate values, which saves computing time. To this end theprogram determines, in each basic profile, which of the components isthe greater. It will be clear from FIG. 2 that the X component ofdisplacement (BX-AX) is greater than the Y component of displacement(BY-AY), so that the component velocity V1X must be greater than thecomponent velocity V1Y if the X and Y movements are to meetsimultaneously at the point B. It is preferred to carry out thecomputation in respect of the larger component and to scale the lesserone because if the latter is very small it would not be possible toproduce an accurate scaling of the larger component.

Next, the program generates the curve DE, that is it determines thecoordinate positions of points P between the start and end points D,E ofthe curve. Here, use is made of the constant velocities V1X,V2X,V1Y,V2Y.It is sufficient to compute one of the profiles for the curve on thebasis of one pair of constant velocities V1X,V2X or V1Y,V2Y and thenscale the other profile of the curve accordingly. Clearly, it isdesirable that the computation is done for that profile of the curvewhich connects the pair of constant velocities V1X,V2X or V1Y,V2Y whichhave the greater difference DVX or DVY (FIG. 3) between the highest andlowest values. To this end the program determines the difference DVXbetween the velocities V1X,V2X and the difference DVY between thevelocities V1Y,V2Y of the two basic profiles VP1,VP2, and determineswhich of the differences DVX or DVY is the greater. The appropriatecomponent profile DVPX or DVPY of the curve is then computed on thebasis of the component velocities having the greater said difference.The rate of change of acceleration (FIG. 4b) necessary for this purposeis preferably the same as that used for the initial acceleration periodI,II of the relevant profile. It will be understood that the curve DE isdeterminable independently of the basic profiles so long as the startand end velocities and the rate of change of acceleration are given.When determining the curve, the coordinates of the points D,E arise inthe same way as any other point P, and this determines when the steadyvelocity V1 has to end, and when the steady velocity V2 has to begin.

FIG. 4a shows how the component profiles V1X(t),V1Y(t), V2X(t),V2Y(t)are discontinued between the points D,E and are replaced by componentprofiles DVPX and DVPY of the curve DE. Following determination of thestart and end points of the curve, and consequent determination of theend and start points for the steady velocities, the curve fitsautomatically between the latter velocities as shown at periods VI,VII.It will be seen that the profile DVPX starts and ends with zerodeceleration at time points td and te respectively. Medially between thepoints td,te, at the junction of the periods VI,VII, the deceleration isa maximum. The profile DVPY has a corresponding accelerationcharacteristic, hence the change of momentum of any mass moved inaccordance with the combines profiles DVPX,DVPY starts and ends with aminimum change and has a maximum change medially therebetween. Thisarises from the use of a said constant rate of change of acceleration ordeceleration. As a result each component movement has a motion which isfree from impulse with consequential benefit for the resultant movement.

The profiles DVPX,DVPY are derived from a resultant velocity functionV=f(K,t) wherein K=a maximum acceleration term and t=time. Each profileDVPX,DVPY may be said to be a corresponding function f(K,t) of avelocity difference DVX or DVY (FIG. 4a), wherein the two functions havethe same start point td and the same end point te in time, wherein bothfunctions follow the same law, wherein the values of the two functionshave proportions determined by the respective start and end velocitiesV1X,V2X or V1Y,V2Y, and wherein each function is symmetrical about themid-point between the start and end times td,te. In the example, theacceleration term has a triangular characteristic so as to define saidconstant rate of change of acceleration K, starting and ending with zeroacceleration, thereby having the benefits mentioned. The functions mayhave other acceleration terms as described later herein.

As mentioned, the basic velocity profiles VP1,VP2 are determined on thebasis of a given maximum velocity and of a given rate of change ofacceleration. It follows that the greater the steady velocity V1,V2 thegreater are the periods I,II of initial acceleration, the periods VI,VIIof deceleration/acceleration of the curve DE, and the period IV,V offinal deceleration, and the shorter are the periods III of steadyvelocity. In order to fit the curve successfully between the initialacceleration at period I,II and final deceleration IV,V, two conditionshave to be met. Firstly, the period VI,VII of the curve DE must not beless than can be accommodated between the end of the steady velocityperiod III of the first vector VAB and the beginning of the steadyvelocity period III of the second vector VBC. If that should be thesituation, the remedy is to extend the steady period III of the firstprofile VP1 beyond that originally produced. Correspondingly the steadyvelocity period III of the second profile VP2 may have to be startedearlier. Secondly, the period VI,VII of the curve DE must not be greaterthan can be accommodated between the start of the steady velocity periodIII of the first profile VP1 and the end of the steady velocity periodIII of the second profile VP2. If the latter condition is not satisfied,the remedy is to lower the steady velocity from its maximum value withthe consequence of reducing the periods I,II of initial acceleration,the period of the curve VI,VII and the period IV,V of finaldeceleration. The remedies described are determined by the programmer byappropriate selection of the maximum steady velocities V1,V2 and themaximum rate of change of acceleration for any given pair ofdisplacement vectors SAB,SBC.

Referring now to the program 99 in detail (FIGS. 5 to 8), there are thefollowing routines and identifiers.

IDENTIFIERS OF MAIN ROUTINE 100

AX=X co-ordinate positions of A

AY=Y co-ordinate positions of A

BX=X co-ordinate positions of B

BY=Y co-ordinate positions of B

CX=X co-ordinate positions of C

CY=Y co-ordinate positions of C

V1=steady part of VP1

V2=steady part of VP2

V1X=steady part of V1X(t)

V1Y=steady part of V1Y(t)

LUT1X=look-up table of position increments of X component of thevelocity profile VP1.

LUT1Y=look-up table of position increments of Y component of thevelocity profile VP1

NG2=number of sampling periods needed to move between points A,G2

G2X=X co-ordinate of the point G2.

G2Y=Y co-ordinate of the point G2.

V2X=steady part of V2X(t)

V2Y=steady part of V2Y(t)

LUT2X=look-up table of position increments of X component of a velocityprofile VP2.

LUT2Y=look-up table of position increments of Y component of a velocityprofile VP2

NH2=number of sampling periods needed to move between points B,H2

H2X=X co-ordinate of point H2

H2Y=Y co-ordinate of point H2

DVX=difference between V1X,V2X

DVY=difference between V1Y,V2Y

NC=No. of sampling periods in a given time period

LUTDX=look-up table of position increments of velocity differenceprofile DVPX

LUTDY=look-up table of position increments of velocity differenceprofile DVPY

DX=X-position of D

DY=Y-position of D

EX=X-position of E

EY=Y-position of E

N=first index for look-up tables.

ACCX=accumulated increments of table LUT1X or LUT2X.

ACCY=accumulated increments of table LUT1Y or LUT2Y.

N1=second index for look-up tables

K=maximum rate of change of acceleration

IDENTIFIERS OF SUB-ROUTINE 200

SP1X=X-co-ordinate of start point for a velocity profile e.g. V1X(t).

SP1Y=Y-co-ordinate of start point for a velocity profile e.g. V1Y(t)

SP2X=X-co-ordinate of end point for a velocity profile e.g. V1X(t).

SP2Y=Y-co-ordinate of end point for a velocity profile e.g. V1Y(t).

SV1,2=desired max. velocity of a velocity profile e.g. V1.

SD1X=difference between SP2X and SP1X=X component length of adisplacement vector e.g. SAB.

SD1Y=difference between SP2Y and SP1Y=Y component length of adisplacement vector e.g. SAB.

SL=length of a vector e.g. SAB.

SV1X=X-component of SV1,2.

SV1Y=Y-component of SV1,2.

LVX=look-up table of position increments of X-component of a velocityprofile e.g. V1X(t)

SVPJ=number of sampling periods needed to move between two points e.g.A,G2.

CRENDX=X-co-ordinate of a point e.g. G2.

LVY=look-up table of position increments of Y-component of a velocityprofile e.g. V1Y(t).

CRENDY=Y-co-ordinate of a point e.g. G2.

IDENTIFIERS OF SUB-ROUTINE 300

SD=component length of a vector e.g. BX-AX,

SV=component speed for movement along SD.

SN=index for a look-up table.

SCREND=co-ordinate of a point e.g. G2X.

K=maximum rate of change of acceleration

SVPT1=a half period of an acceleration/deceleration curve e.g. thehalf-period I.

SVPTEND=time needed for movement along the component length SD.

SVPN=number of sampling periods T in the half-period SVPT1.

SVPM=number of sampling periods T in the constant speed run of avelocity profile component e.g. V1X(t).

SJ=The number of sampling periods T in the time needed for movementbetween the beginning and the end (e.g. the points AX and G2X) of avelocity profile component (e.g. V1X(t)).

SLV=look-up table of position increments for a velocity profilecomponent (e.g. V1X(t)).

IDENTIFIERS OF SUB-ROUTINE 400

SDV=a velocity difference (e.g. DVX).

TCURVE=a half-period (e.g. VI) of a velocity difference profile (e.g.DVPX).

SNC=number of sampling periods T in the half-period Tcurve.

RN=an index for a look-up table.

LCG=a look-up table.

MAIN ROUTINE 100 (FIG. 5)

The successive steps of the program 100 are now recited with commentwhere appropriate.

101--Loading of data into subroutine 200 for determination of theincrements in co-ordinate position corresponding to the velocity profileVP1 and the co-ordinate velocities V1X,V1Y of the steady part of VP1.See steps 116-143 below.

102--Loading of data into subroutine 200 for determination of theincrements in co-ordinate position corresponding to the velocity profileVP2 and the co-ordinate velocities V2X,V2Y of the steady part of VP2.

103--Establishing the difference DVX (FIG. 3) between the co-ordinatevelocities V1X,V2X and the difference DVY between the co-ordinatevelocities V1Y,V2Y.

104--Establishing which of the differences DVX or DVY is the greater. Itwill be appreciated that when moving between the points DE there wouldnormally be a need for a velocity change between the X components of thesteady velocities of the two vectors and another such change between theY components. The velocity profile to be established for the curve DE isdetermined by the greater of those two changes. It is assumed in thisexample that the difference V1X-V2X is greater than V1Y-V2Y so that theprogram proceeds along the "yes" arm of the decision 104.

105--Loading of the value DVX into subroutine 400 for determination ofthe position increments defined in look-up tables LUTDX of the Xcoordinate DVPX of the velocity difference profile DVP. The profile DVPXis an absolute value not taking account of the sign of DVPX. The timeperiod NC is determined in subroutine 400 and subsequently becomesavailable at this time. In the present example the profile DVPX fallswith time so that its sign is negative and this will be determined atsteps 107, 108 below. Further in the present example the change betweenthe velocities V1X,V2X is not so much a matter of magnitude but a matterof direction, i.e. V1X is positive while V2X is negative. This reversalof sense of direction means that the movement has to stop and reverse ata point F (FIGS. 2,4) and the computations shown take account of this.

106--Establishing the value of position increments defined in look-uptable LUTDY of the Y coordinate of the difference profile DVP as aproportions of LUTDX in the ratio of (V1Y-V2Y):DVX. All elements ofLUTDY are scaled.

107--Decision to establish whether the difference V1X-V2X is less thanzero.

108--The "yes" arm of 107 determines the LUTDX is negative in accordancewith FIG. 4.

109--Determining the X coordinate DX of the point D as a function of(BX-AX) and of a distance being a function of V1X and half of the numberof sampling periods pertaining to the total curve time (NC).

110--Same as 109 but for Y coordinate of point D.

111, 112--Same as 109, 110 but for X, Y coordinates of point E.

113--Initializing the number N of the look-up tables LUT1X, LUT1Y. Thisnumber being held in an appropriate counter (not shown). Initializingthe sum ACCX. Initializing the sum ACCY.

114--Decision as to whether the point D occurs after point G2. If so,the constant speed is continued beyond the point G2 until a positiondefined by the coordinates of the point D is reached. In the presentexample the answer is "no". If "yes" go to 123.

115--Await the signal 98A from the clock 98. As mentioned with referenceto FIGS. 3, 4, the signal 98A establishes the time intervals T at whichthe signals MX1, MY1 are output.

116--The same as 115, but coming into operation if point D occurs afterpoint G2.

117--Output position increments for the motor MX to drive the machine inthe X component of the path AD. The information is generated aspositions required at time intervals given by the clock 98 of thecomputer 11 and held in the table LUT1X.

118--Establishing the sum ACCX which is a measure of the distancetravelled in the X coordinate.

119--Same as 117 but in respect of the Y component of the path AD.

120--Same as 118 but in respect of the sum ACCY.

121--Decision to establish whether the point D has been reached. If "no"go to step 122. If "yes" go to step 130. At this time, as in step 129,the number N is that pertaining to the point D and the correspondingincrements in the look-up tables LUT1X, LUT1Y pertaining to the constantrun values V1X, V1Y.

122--Updating of the serial number N of the look-up tables.

123, 124, 125, 126--The same as 117, 118, 119, 120, but coming intooperation if point D occurs after point G2.

127--Decision as to whether the serial number N has reached the numberNG2 defining the position of the point G2. If "no" the action goes tosteo 128. If "yes" go to step 129. At this time, the number N is thatpertaining to the point G2 and the corresponding increments in thelook-up tables LUT1X, LUT1Y pertain to the constant run values V1X, V1Y.

128--The same as step 122.

129--Decision to establish whether the point D has been reached. If "no"the action goes back to step 116 with the result of the last number Nremaining effective, i.e., the speed remaining at the constant runvalues V1X, V1Y, until the point D is reached.

130--Initializing the number N1 of the look-up tables LUTDX, LUTDY.

130A--Same as 115.

131--Output position increments for the motor MX to drive the machine inthe X component of the curve DE. Note that the increment is the sum ofthe last increment LUT1X(N) leading to the point D and an incrementLUTDX(N1) defining the change in speed initializing the X component ofthe curve DE.

132--Same as 131 but pertaining to the Y component of the curve DE.

133--Decision as to whether the number N1 is such that point E has beenreached. If "no" go to 134. If "yes" go to 135.

134--Update the number N1 for the next cycle through steps 131, 132.

135--Initializing the number N of the look-up tables LUT2X, LUT2Y to anumber NH2 pertaining to the last position increments of the constantrun speeds V2X, V2Y, this being at the point H2.

136--Initializing the sum ACCX to the value corresponding to the pointE.

137--Initializing the sum ACCY to the value corresponding to the pointE.

137A--Same as 115.

138--Output position increments for the motor MX to drive the machine tothe point C.

139--Establish the sum ACCX which is a measure of the travel in the Xcoordinate.

140--Same as 138 but for the Y coordinate.

141--Same as 139 but for the Y coordinate.

142--Decision as to whether the sums ACCX, ACCY are such that the pointH2 has been reached. If "no" go to step 137A. If "yes" go to step 143.

143--Decision as to whether the sums ACCX, ACCY are such that the pointC has been reached. If "no" go to step 144. If "yes" go to end.

144--Update the number N and go to step 137A.

SUBROUTINE 200 (FIG. 6)

Subroutine 200 comprises the following steps:

201--Reading data from main program steps 101, 102.

202--Calculating the X and Y components of displacement SD1X, SD1Ybetween points SP1, SP2.

203--Calculating the length SL of the vector joining the points SP1,SP2.

204--Calculating X and Y component velocities SV1X, SV1Y.

205--Decision as to which of the co-ordinate velocities SV1X, SV1Y isthe greater in magnitude. Assuming the velocity SV1X to be the greater(as is the case with the velocity V1X between the points G1, G2 in FIG.3), the decision leads to the "yes" branch.

206--Load absolute values of SD1X, SV1X into subroutine 300 forcalculating position increments LVX.

207--Scaling of the profile LVY for the Y component, i.e. in this casethe smaller component.

208--Scaling the value CRENDX by the same factor as at step 207 toproduce the value CRENDY.

209--Decision as to whether SV1X is positive or negative. Assuming SV1Xis negative (as in the case of V2X in FIG. 3), the decision leads to the"yes" branch.

210--Multiply LVX by (-1).

211--Multiply CRENDX by (-1).

212--Output data to main program steps 101, 102.

It will be seen that the subroutine 200 establishes data defining (a)the X, Y components SD1X, SD1Y of the displacement vectors SAB, SBC, (b)the X, Y components V1X, V1Y, V2X, V2Y of the velocities V1, V2, (c) ofeach vector, which of the X, Y velocity components is the greater.Establishing these data is a necessary preliminary for establishing bysubroutine 300, the actual velocity profiles of said greater componentsand the subsequent scaling of the other, lesser components.

SUBROUTINE 300 (FIG. 7)

More specifically, subroutine 300, brought in at step 206 of subroutine200, is concerned with determining increments in co-ordinate positioncorresponding to a velocity profile SV(t), in the present example therespective profiles V1X(t) and V2X(t). The subroutine 300 has thefollowing steps:

301--Receiving from subroutine 200 data SD defining the vector componentSD1X or SD1Y pertaining to the greater velocity component SV1X or SV1Y,the velocity component being received as data SV.

302--Initializing a counter.

303--Initialize the variable SCREND.

304--Calculating the half-time SVPT1 being half the time periodnecessary to attain the maximum component velocity SV at a given rate ofchange of acceleration K. Note that, as shown in FIG. 3, there are inrespect of each vector four such half-time periods SVPT1 denoted I, II,IV, V.

305--Calculating the total time SVPTEND required to traverse thedistance SD wherein SVPTEND comprises the four half periods SVPT1(arranged to give acceleration and deceleration as shown in FIG. 3) anda further period III during which the movement takes place at constantspeed SV. The latter period can of course be zero.

306--Calculating the number SVPN of sampling period of time period Tincluded in SVPT1.

307--Calculating the number SVPM of sampling periods of time period Tincluded in period III.

308--Calculating the number SJ of sampling periods T included in periodsI, II, III.

309--Decision whether the number SVPM is negative. If "no" go to step311. If "yes", this indicates that velocity V1 or V2 (input at step 101of program 100) cannot be reached within the specified distance SD; goto step 310.

310--Calculating a new value of SV such that the answer at step 309becomes "no". This has the effect of reducing the time period III tozero, i.e. the velocity profile comprises only an acceleration and adeclaration phase and the maximum speed attained is the best that can beachieved in the circumstances.

311--Decision whether SVPN has been reached. See remarks for 312.

312--Calculating the position increments SLV pertaining to the firsthalf-period SVPT1, i.e. the period I of the profile V1X(t). The decision311 monitors the progress of these increments and, when the profile hasreached the last one of the number SVPN, the decision changes to step313. The total number of values SLV produced in this way constitute alock-up table SLV. The position increments produced at steps 314, 316,318, 319 recited next below, are added sequentially to the table SLV.

313, 314--are respectively a decision and a calculation similar to thoseat steps 311, 312 but pertaining to the portion II of the profile.

315, 316 and 317, 318, 319 are the corresponding decisions andcalculations for the periods III, IV, V of the velocity profiles V1X(t)or V2X(t).

320--Accumulating the position increments calculated at steps 312, 314,316. This provides the increments for periods I, II, III. Note thatincrements for the periods IV, V are not required inasmuch as theseperiods are replaced later by period VI, VII (FIG. 4) for the velocityprofile DVPX of the curve DE.

321--Decision whether the end of the velocity profile VP1 or VP2 hasbeen reached. If "no" go to step 322. If "yes" go to 323.

322--Increment the number SN by "1".

323--Output the data indentifying the variables SLV, SJ, SCREND to themain program 100.

SUBROUTINE 400 (FIG. 8)

Subroutine 400 is concerned with determining increments in co-ordinateposition corresponding to a velocity difference profile, in this examplethe profile DVPX (FIG. 4). The subroutine 400 has the following steps:

401--Receiving from the main program 100 the data for a velocitydifference SDV.

402--Calculating the half-time T curve, i.e. the half-value of the timewithin which the curved transition between the vectors SAB, SBC, is totake place, as a function of the velocity difference SDV.

403--Calculating the number SNC of sampling periods T included in thehalf-time T curve.

404--Initializing the value of the number RN.

405--Decision whether SNC has been reached. See remarks for 406.

406--Calculating the position increments pertaining to the first half ofa velocity difference profile LCG, in the present example the profileDVP. The decision 405 monitors the progress of these increments and,when the profile has reached the last one of the number SNC, thedecision 405 changes to the step 407.

407--Calculating the position increments pertaining to the second halfof the velocity difference profile LCG. The first and second halves ofthis velocity profile have respectively phases of increasing anddecreasing acceleration, the acceleration being zero at the start andthe end with the movement. The calculation 406, 407 always start withthe increasing acceleration phase. If, as in the case of the profileDVPX (FIG. 4) the curve is to start with the decreasing accelerationphase, the main program 100 acts at steps 107, 108 to multiply theoutput of steps 406, 407 by -1.

408--Decision whether the end of the velocity difference profile DVPXhas been reached. If "no" go to step 409. If "yes" go to step 410.

409--Increase the number RN by "1".

410--Output the data identifying the variables SNC, LCG to the mainroutine 100.

The curvature of the curve DE generated by the above program isdetermined by the start and end velocity vectors and by the rate ofchange of acceleration used for determining the component velocityprofiles of the curve. This curvature has zero value at the start andend points of the curve and a maximum value intermediate therebetween.In the special case of the speeds of the start and end velocity vectorsbeing the same, the maximum curvature lies medially between the startand end points of the curve. The rate of change is chosen to be uniformfor the curve. This provides freedom from impulsive velocity changes andresults in relatively simple computation so that the cycle time of theprogram is relatively low. However, inasmuch as it may be desirable tomodify the curvature, this may be done by modifying the rate of changeof acceleration in the sense of making it non-uniform. For example therate of change may be sinusoidal, i.e. the acceleration may have asinusoidal characteristic SI (FIG. 4b) in which case the curvature ofthe curve DE is uniform, i.e. the curve DE is a circular arc.

As mentioned in connection with steps 131, 132 of the program 99, thedrive signals MX1, MY1 are position signals output at the uniform timeintervals T, the magnitudes of any one pair of position signals MX1, MY1determining the velocity of the resulting movement. In a modification(not illustrated) the program is adapted to generate the signals MX1,MX2 as velocity signals, the feedback signals MX2, MY2 then beingconstituted velocity feedbacks.

The time interval T is of the order of 2 milliseconds and is chosen tobe sufficiently short for machine control purposes and to besufficiently long for one cycle of the program 99. The computer 11 is amodern microprocessor and the cycle time of the program 99 i.e. the timerequired to generate any one pair of signals MX1, MY1 and store thispair in a look-up table, is of the order of 100 microseconds. The outputtime for the signals MX1, MY1 to the motor is of the order of 40microseconds. Thus the intervals T are much longer than the timenecessary for generating and applying any one pair of signals MX1, MY1.It is therefore preferred to start the movement of the machineimmediately following the generation of the first pair MX1, MY1. Forsimplicity, the program 99 is described along the lines of generatingthe whole of the necessary look-up tables before outputting the firstpair of signals MX1, MY1. In practice the clock 98, which determines theintervals T, is used to interupt the program at each interval T tooutput any one "next" pair of signals MX1, MY1 from the look-up tables.In this way, the movement of the machine can be started directlyfollowing the generation of the first pair MX1, MY1, and the continuedgeneration of the look-up tables can take place while the machine is inmotion. In this way there is no loss of time due to having to await thecompletion of the look-up tables, and the operation of the machine takesplace in real time.

In a modification, the law of the velocity functions DVPX, DVPY ischaracterised by a constant acceleration examplified by a flatcharacteristic ST (FIG. 4b). This results in discontinuous changes inthe acceleration diagram and corresponding changes in the forces actingin the machine. In other words, the curve is started by instantaneouslyapplied component forces each of which acts uniformly for the whole ofthe curve and both of which cease simultaneously. This may be acceptablein certain cases especially if the mechanical system of the machine hasgood damping properties. As far as the calculation of the curve pointsare concerned, the algorithms are independent of the velocity function.It will be seen therefore that any acceleration characteristic can bechosen for the velocity functions to produce a desired curve.

We claim:
 1. Coordinate positioning apparatus comprising a first and asecond component drive means for imparting to a driven member a movementdefined by a curve adapted to connect first and second linear paths, themember having first and second velocities along the first and secondlinear paths, respectively,(a) means for determining a pair of componentvelocities in respect to each of the first and second velocities: (b)means for establishing the difference between one corresponding pair ofcomponent velocities, (c) means for establishing the difference betweenanother corresponding pair of component velocities, (d) means forestablishing which of said differences is the greater and which is thelesser, (e) means for establishing a first velocity profile betweencorresponding component velocities having the greater said difference onthe basis of the corresponding component velocities, and a constantabsolute value for rate of change of acceleration, (f) means forestablishing a second velocity profile between the correspondingcomponent velocities having the lesser said difference, the secondvelocity profile being a scaled version of the first velocity profile,(g) means for generating drive signals defining said first and secondvelocity profiles, and (h) means for applying the said drive signals tosaid drive means thereby to produce a resultant movement.
 2. Apparatusaccording to claim 1 wherein said first velocity profile is generated bya function generator including:(a) means for determining one half of atime period corresponding to said first velocity profile, means fordetermining a number of time intervals being fractions of said half timeperiod, (b) means for determining an array, whose size is equal to saidnumber, of discrete signals corresponding to velocity values whichincrease progressively at an increasing rate from the value of one ofsaid velocity components, (c) means for determining an array, whose sizeis equal to said number, of signals corresponding to discrete velocityvalues which increase progressively at a decreasing rate between thevalue of one of the velocity components, and the value of the other ofthe components.
 3. The method of operating a machine having twocoordinate drives cooperating to produce a resultant movement of adriven member, comprising:(a) determining first and second velocitiesfor movement of the driven member along respective paths having a pointof intersection; (b) determining in respect of each velocity a pair ofcomponent velocities; (c) determining a first velocity profile betweenone component of the first velocity and the corresponding component ofthe second velocity and determining a corresponding second velocityprofile being a scaled version of the first velocity profile; (d) aresultant velocity profile of the first and second velocity profilesdefining a curve joining said paths, and having a start point and an endpoint; (e) the resultant velocity profile having at said start point afirst pair of component velocities the same as those of the firstvelocity; (f) the resultant velocity profile having at said end point asecond pair of component velocities the same as those of the secondvelocity; (g) defining a start point and an end point on the respectivepaths at which the curve is joinable thereto; and (h) actuating saidcoordinate drives sequentially in accordance with the componentvelocities of the first velocity, with the first and second velocityprofiles of the curve, and with the component velocities of the secondvelocity.
 4. The method according to claim 3, furthercomprising:determining said first velocity profile on the basis of thevelocity difference, between corresponding components of the first andsecond velocities, which is greatest.
 5. A method of operating acoordinate positioning machine to accelerate a head of the machine, themethod comprising the steps of:determining, on the basis of first andsecond velocities and a predetermined acceleration function, a timeinterval required to accelerate the head from the first to the secondvelocity; determining on the basis of the time interval a curvedvelocity profile for accelerating the head from the first to the secondvelocity; and driving the head according to the curved velocity profile.6. A method according to claim 5, wherein determining the curve velocityprofile further comprises the step of:generating, on the basis of themagnitude of the time interval, a series of position demand coordinatesfor driving the head.
 7. A method according to claim 5, wherein themagnitude of the time interval is determined by equating the integral ofthe acceleration function between limits determined by the time intervalto the difference in velocity between the first and second velocities.8. A method of operating position drives of a coordinate positioningmachine, to accelerate a head of the machine through a change invelocity from a first velocity to a second velocity, comprising thesteps of:determining on the basis of the first and second velocities,and of a constant absolute value for rate of change of acceleration, atime interval required to accelerate the head from the first to thesecond velocity; determining on the basis of the time interval avelocity profile for accelerating the head from the first to the secondvelocity; generating a drive signal representing the velocity profile;and applying the drive signal to the positioning drives of thecoordinate positioning machine, thereby to accelerate the head from thefirst to the second velocity.
 9. A method according to claim 8, whereinthe first and second velocities are in different directions.
 10. Amethod according to claim 8, wherein the first and second velocities arein the same direction.
 11. A method according to claim 8, furthercomprising the steps of:generating on the basis of the magnitude of thetime interval, a series of position demand coordinates; generating aperiodic clock pulse having a constant period; generating drive signalsrepresenting position demand coordinates; and applying the drive signalsto the positioning drive at a frequency equal to the clock pulse.
 12. Amethod according to claim 11, wherein the position demand coordinatesare generated by a predetermined function of the incremental value ofthe clock pulses over a period of time equal to the time interval.
 13. Amethod according to claim 8, wherein the time interval is equal to:

    2(DV/K).sup.1/2

where: DV is the change in velocity from the first velocity to thesecond velocity; and K is the constant absolute value of rate of changeof acceleration.
 14. A method of controlling positioning drives of acoordinate positioning machine, to drive a head of the machine from afirst velocity to a second velocity, comprising the steps of:determiningon the basis of the first and second velocities and a constant absolutevalue for rate of change of acceleration, a series of position demandcoordinates; and controlling the positioning drives so that they drivethe head of the machine through the position demand coordinates.
 15. Themethod according to claim 14 further comprising the step of determiningon the basis of the first and second velocities and said constant valuefor the rate of change of acceleration, a time interval, and whereinsaid position demand coordinates are determined on the basis of saidtime interval.
 16. The method according to claim 15, further comprisingthe steps of:generating a periodic clock pulse having a constant period;generating drive signals representing position demand coordinates; andapplying the drive signals to the positioning drives at a frequencyequal to the clock pulse.
 17. The method according to claim 15, whereinthe time interval is equal to:

    2(DV/K).sup.1/2

where: DV is the change in velocity from the first velocity to thesecond velocity; and K is the constant absolute value of rate of changeof acceleration.
 18. The method according to claim 15, wherein theposition demand coordinates are generated by a predetermined function ofthe incremental value of the clock pulses over a period of time equal tothe time interval.
 19. Apparatus for operating positioning drives of acoordinate positioning machine, to accelerate a head of the machinethrough a change in velocity from a first velocity to a second velocity,comprising:means for determining on the basis of the first and secondvelocities, and of a constant absolute value for rate of change ofacceleration, a time interval required to accelerate the head from thefirst to the second velocity; means for determining on the basis of thetime interval a velocity profile for accelerating the head from thefirst to the second velocity; means for generating a drive signalrepresenting the velocity profile; and means for applying the drivesignal to the positioning drives of the coordinate positioning machine,thereby to accelerate the head from the first to the second velocity.20. Apparatus for controlling positioning drives of a coordinatepositioning machine, to drive a head of the machine from a firstvelocity to a second velocity, comprising:means for determining on thebasis of the first and second velocities and a constant absolute valuefor rate of change of acceleration, a series of position demandcoordinates; and means for controlling the positioning drives so thatthey drive the head of the machine through the position demandcoordinates.